/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2007，所有权利保留。
 * 
 * 项目名：	rumba
 * 文件名：	IPromptProvider.java
 * 模块说明：	
 * 修改历史：
 * Oct 30, 2007 - lxm - 创建。
 */
package com.hd123.rumba.prompt.provider;

import net.sf.hibernate.HibernateException;

import com.hd123.rumba.cartridge.biz.BCartFunctionView;
import com.hd123.rumba.exception.BusinessException;
import com.hd123.rumba.runtime.OperateContext;

/**
 * 提醒功能提供者 | 管理员 | 接口类
 * 
 * @author lxm
 * 
 */
public interface IPromptProvider {

  /**
   * 取得当前提醒服务的用户友好标题。
   * 
   * @return
   */
  public String getCaption();

  /**
   * 所属构件包功能视图。只读。允许null，表示作为系统默认提醒方式，在任何情况下可用。
   * 
   * @return
   * @throws BusinessException
   */
  public BCartFunctionView getCFV() throws BusinessException;

  /**
   * 创建一个提醒内容对象。
   * 
   * @return 返回创建的提醒内容对象。
   * @throws BusinessException
   */
  public IPromptContent createContent() throws BusinessException;

  /**
   * 创建一个提醒内容对象。
   * 
   * @param context
   *          指定的上下文。允许null。
   * @return 返回创建的提醒内容对象。
   * @throws BusinessException
   */
  public IPromptContent createContent(String context) throws BusinessException;

  /**
   * 向指定的用户放入一条提醒信息。<br>
   * 含有事务。
   * 
   * @param receiver
   *          指定接收提醒信息的用户。
   * @param content
   *          指定提醒内容。
   * @param operate
   * @throws BusinessException
   * @throws HibernateException
   */
  public void putToUserT(Object receiver, IPromptContent content, OperateContext operate)
      throws BusinessException, HibernateException;

  /**
   * 向指定的角色放入一条提醒信息。<br>
   * 含有事务。
   * 
   * @param receiver
   *          指定接收提醒信息的角色。
   * @param content
   *          指定提醒内容。
   * @param operate
   * @throws BusinessException
   * @throws HibernateException
   */
  public void putToRoleT(Object receiver, IPromptContent content, OperateContext operate)
      throws BusinessException, HibernateException;
}
